package cn.gov.anhai.utils;

import cn.hutool.core.lang.Snowflake;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.springframework.util.StringUtils;

import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;

/**
 * 我的工具
 */
public class MyUtil {
    /**
     * 提取html文本
     */
    public static String getTextByHtml(String htmlContent) {
        if (StringUtils.isEmpty(htmlContent)) return "";
        Document doc = Jsoup.parse(htmlContent);
        String text = doc.text(); // 提取文本
        return text;
    }

    /**
     * 判断key是否存在，key对应值是否null
     *
     * @return 存在且不为null=true，反之false
     */
    public static <k, v> boolean hasMapKey(Map<k, v> map, k key) {
        return map.containsKey(key) && map.get(key) != null;
    }

    public static <k, v> v getValueByKey(Map<k, v> map, k key, v defaultValue) {
        if (hasMapKey(map, key)) return map.get(key);
        return defaultValue;
    }

    /**
     * 获得非空字符串
     */
    public static String getString(String str) {
        if (StringUtils.isEmpty(str)) return "";
        return str;
    }

    /**
     * 从第二个字符开始
     */
    public static String getSubstring(String str) {
        if (StringUtils.isEmpty(str)) return "";
        return str.substring(1);
    }

    /**
     * 添加元素
     */
    public static <v> void addItem(List<v> list, v value) {
        if (value == null) return;
        list.add(value);
    }

    /**
     * 添加元素
     */
    public static <v> void addItem(List<v> list, List<v> value) {
        if (value == null) return;
        for (v item : value) {
            addItem(list, item);
        }
    }

    /**
     * 获得ID
     */
    public static Long getUUID() {
        Snowflake snowflake = new Snowflake();
        return snowflake.nextId();
//        UUID uuid = UUID.randomUUID();
//        Long longUUID = uuid.getMostSignificantBits();
//        return longUUID;
    }

    /**
     * 获得当前时间字符串
     */
    public static String getNow(String form) {
        LocalDate today = LocalDate.now(); // 获取今天的日期
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(form); // 定义日期格式
        String date = today.format(formatter);
        return date;
    }

    /**
     * 得到指定格式的日期字符串
     */
    public static String getDateTime(Date date, String form) {
        if (date == null) return "";
        SimpleDateFormat formatter = new SimpleDateFormat(form); // 定义日期格式
        String str = formatter.format(date);
        return str;
    }

    public final static String[] FILE_VOD = {"ogm", "wmv", "mpg", "webm", "ogv", "mov", "asx", "mpeg", "mp4", "m4v", "avi"};

    /**
     * 获得文件类型（video|image）
     */
    public static String getDataFileType(List<String> files) {
        if (files.size() == 1) {
            return getDataFileType(files.get(0));
        }
        return "image";
    }

    /**
     * 获得文件类型（video|image）
     */
    public static String getDataFileType(String file) {
        String fileType = file.substring(file.lastIndexOf('.') + 1).toLowerCase();
        //(*.ogm;*.wmv,*,mpg,*.webm;*.ogv,*,mov,*.asx,*.mpeg,*.mp4;*.m4v,*.avi)
        for (String type : FILE_VOD) {
            if (type.equals(fileType)) {
                return "video";
            }
        }
        return "image";
    }
}

